/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ejb.common;

import entity.Comune;
import entity.Negozio;
import facade.NegozioFacade;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 *
 * @author Antonio
 */
@Stateless
public class NegozioManager implements NegozioManagerLocal {

    @PersistenceContext(unitName = "E-Market-ejbPU")
    private EntityManager em;
    @EJB
    private NegozioFacade negozioFacade;

    @Override
    public void creaNegozio(Negozio negozio) {
        negozioFacade.create(negozio);
    }

    @Override
    public void rimuoviNegozio(Negozio negozio) {


        if (negozio == null) {

            return;
        }
        Query q = em.createNamedQuery("negozio.cercaPerNome");
        q.setParameter(1, negozio.getNome());
        if (!q.getResultList().isEmpty()) {

            return;
        }
        negozioFacade.remove(negozio);
    }// rimuoviNegozio

    @Override
    public Negozio cercaNegozio(Long id) {

        if (id == null) {

            return null;
        }
        return negozioFacade.find(id);
    }// cercaNegozio

    @Override
    public List<Negozio> cercaNegozio(String nome) {
        Query q = em.createNamedQuery("negozio.cercaPerNome");
        q.setParameter(1, nome);
        return q.getResultList();
    }

    @Override
    public List<Negozio> cercaNegoziDalComune(Comune comune) {
        Query q = em.createNamedQuery("negozio.cercaPerComune");
        q.setParameter(1, comune.getId());
        return q.getResultList();
    }

    @Override
    public boolean negozioValido(Long idNegozio) {
        Query q = em.createNamedQuery("negozio.isValido");
        q.setParameter(1, idNegozio);
        return !(q.getResultList().isEmpty());
    }

    @Override
    public boolean negozioValido(Long idNegozio, Long idComune) {
        Query q = em.createNamedQuery("negozio.negozioDiUnComune");
        q.setParameter(1, idNegozio);
        q.setParameter(2, idComune);
        if(q.getResultList().isEmpty()){
            return false;
        }
        return true;
    }

    @Override
    public List<Negozio> cercaNegoziDelCliente(Long idCliente) {
        Query q = em.createNamedQuery("negozio.delCliente:)");
        q.setParameter(1, idCliente);
        return q.getResultList();
    }

    @Override
    public Long getNumeroOrdini(Long idCliente, Long idNegozio) {
        Query q=em.createNamedQuery("negozio.numeroOrdiniCliente");
        q.setParameter(1, idCliente);
        q.setParameter(2, idNegozio);
        Long i= (Long) q.getSingleResult();
        return i;
    }
    
}
